package org.jsbd.boss.service.impl;

import org.jsbd.boss.common.redis.RedisClient;
import org.jsbd.boss.dao.IRetentTimesDao;
import org.jsbd.boss.domian.channel.RetentTimesConfig;
import org.jsbd.boss.service.IRetentTimesService;
import org.jsbd.boss.util.CacheKey;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;

/**
 * @desc
 * @Date 2018/9/27 10:31
 * @Author xupengcheng [xupengcheng@zhexinit.com]
 */
@Service
public class RetentTimesServiceImpl implements IRetentTimesService {


    @Resource
    private IRetentTimesDao retentTimesDao;


    @Resource
    private RedisClient redisClient;

    @Override
    public List<RetentTimesConfig> selectTimesConfig(String mark) {

        String cacheKey = CacheKey.RETENT_TIMES_CONFIG + mark;
        List<RetentTimesConfig> configList = (List<RetentTimesConfig>) redisClient.get(cacheKey);
        if(configList == null){
            RetentTimesConfig config = new RetentTimesConfig();
            config.setMark(mark);
            configList =  retentTimesDao.selectConfigList(config);
            redisClient.put(cacheKey, configList, 300);
        }
        return configList;
    }


    @Override
    @Transactional(rollbackFor = Exception.class)
    public void saveTimesConfig(List<RetentTimesConfig> configList){
        if(configList != null && !configList.isEmpty()){
            List<RetentTimesConfig> tempList = new ArrayList<>(1);
            RetentTimesConfig config = new RetentTimesConfig();
            config.setMark(configList.get(0).getMark());
            tempList.add(config);
            retentTimesDao.delete(tempList);
            retentTimesDao.saveConfigList(configList);
        }
    }


    @Override
    public void deleteTimesConfig(List<RetentTimesConfig> configList){
        if(configList != null && !configList.isEmpty()){
            retentTimesDao.delete(configList);
        }
    }


}
